第4章中提到的，我们认为旧版本SYCL中的分层并行是一种实验性特性，在使用新的语言特性时，预计会比基本的数据并行和ND-Range内核慢一些。\par

DPC++和SYCL 2020中有很多新的语言特性，其中一些与分层并行不兼容(例如子工作组、组算法、归约减)。消除这种差异将有助于提高程序员的工作效率，并为一些简单的情况提供了更紧凑的语法。图EP-7中的代码显示了将归约支持扩展到层次并行的可能，从而实现层次归约:每个工作组计算一个总和，内核作为一个整体计算所有工作组中所有总和的最大值。\par

\hspace*{\fill} \par %插入空行
图EP-7 使用层次并行进行层次归约
\begin{lstlisting}[caption={}]
h.parallel_for_work_group(N, reduction(max, maximum<>()),
[=](group<1> g, auto& max) {
	float sum = 0.0f;
	g.parallel_for_work_item(M, reduction(sum, plus<>()),
	[=](h_item<1> it, auto& sum) {
		sum += data[it.get_global_id()];
	});
	max.combine(sum);
});
\end{lstlisting}

第4章中简要提到的分层并行性的另一个方面是实现的复杂性。将嵌套的并行性映射到加速器并不是SYCL或DPC++特有的挑战，这个主题是很多人感兴趣和研究的课题。随着在实现分层并行性和不同设备的能力方面的经验积累，我们期望SYCL和DPC++中的语法能够与标准保持一致。\par
















































